#ifndef __SEQLIST_H__
#define __SEQLIST_H__

#define INCREACE_CNT	5

// 类型的定义
// 定义一个顺序表(数组)结构
typedef struct {
	void *arr;       // 数组的起始地址
	int capacity;    // 容量个数
	int nmemb;       // 已容纳的成员个数
	int size;        // 每个成员的字节大小
} seqlist_t;


/* 比较函数返回0 相等
 * >0 data地址空间数据大
 * <0 key地址空间数据大
 */
typedef int (*cmp_t)(const void *data, const void *key);

// 打印成员的函数
typedef void (*pri_t)(const void *data);

// 函数的声明
// 初始化
int seqlist_init(seqlist_t **mylist, int capacity, int size);

// 满
int seqlist_is_full(const seqlist_t *mylist);

// 增
int seqlist_insert(seqlist_t *mylist, const void *data);

// 找
void *seqlist_find(const seqlist_t *mylist, const void *key, cmp_t cmp);

// 删
int seqlist_delete(seqlist_t *mylist, const void *key, cmp_t cmp);

// 遍历
void seqlist_traval(const seqlist_t *mylist, pri_t pri);

// 销毁
void seqlist_destroy(seqlist_t **mylist);

// 插入且有序
int seqlist_insert_sort(seqlist_t *mylist, const void *data, cmp_t cmp);

#endif

